package com.rc.web.service.impl;

import com.rc.web.service.SendService;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

/**
 * 短信服务实现类
 * 提供邮件发送服务
 */
@Service
@RequiredArgsConstructor
public class SmsServiceImpl implements SendService {
    // Java邮件发送器
    private final JavaMailSender mailSender;
    // 模板引擎
    private final TemplateEngine templateEngine;
    // 邮件配置属性
    private final MailProperties mailProperties;

    /**
     * 发送邮件
     * @param email 收件人邮箱地址
     * @throws MessagingException 邮件发送异常
     */
    @Override
    @Async
    public void sendMail(String email) throws MessagingException {
        // 创建MimeMessage对象
        MimeMessage message = mailSender.createMimeMessage();
        // 创建MimeMessageHelper对象，支持附件
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        // 设置发件人
        helper.setFrom(mailProperties.getUsername());
        // 设置收件人
        helper.addTo(email);
        // 设置邮件主题
        helper.setSubject("加盟成功");

        // 创建上下文对象并设置变量
        Context context = new Context();
        context.setVariable("name","666");
        // 处理邮件模板
        String text = templateEngine.process("mail", context);

        // 设置邮件内容，支持HTML解析
        helper.setText(text, true);
        // 发送邮件
        mailSender.send(message);
    }

    // 以下是短信发送的示例代码，当前被注释掉
    //        try {
    //            SendSmsRequest request = new SendSmsRequest();
    //
    //            request.setMethod(MethodType.POST);
    //
    //            // 手机号可以单个也可以多个（多个用逗号隔开，如：15*******13,13*******27,17*******56）
    //            request.setPhoneNumbers(phone);
    //
    //            request.setSignName("田园课堂");
    //
    //            request.setTemplateCode(templateCode);
    //
    //            request.setTemplateParam(text);
    //
    //            SendSmsResponse sendSmsResponse = client.getAcsResponse(request);
    //        } catch (ClientException e) {
    //            throw new RuntimeException(e);
    //        }

}
